
(function($){
	
	
	$.fn.wixmenu = function(options) {
		var settings = $.extend({}, $.fn.wixmenu.defaults, options);
		var lista;
		var menu;
		function comprobarAnchura()
		{
			if(menu.offset().left+lista.outerWidth(outerWidth)>$(window).width())
			{
				var overflow = menu.offset().left+lista.outerWidth(outerWidth)-$(window).width();
				lista.width(lista.width());
				/*if($.browser.mozilla != null)
					overflow = overflow*2+10;*/
				lista.css("margin-left","-"+overflow+"px")
				
			}
		}
		function insertarElemento(elemento)
		{
			var nuevoElemento = lista.find("#"+elemento.id);
			if(elemento.id == null || nuevoElemento.length == 0)
			{
			nuevoElemento = $('<li class="ui-menu-item ui-corner-all ui-state-default" style="border:0" role="menuitem" id="'+elemento.id+'"><a style="display: inline;" id="ui-active-menuitem" class="ui-corner-all" tabindex="-1">'+elemento.name.replace(/ /g, "&nbsp;")+'</a></li>');
			if(elemento.icon != null)
				nuevoElemento.prepend('<img style="display: inline" src="'+elemento.icon+'"/>');
			//nuevoElemento.find("a").addClass("ui-state-default");
			 nuevoElemento.hover(
					 function()
					 {
						 $(this).addClass("ui-state-hover");
					 },
					 function(){
						 $(this).removeClass("ui-state-hover");
					 }).click(function(){
						 try {elemento.callback(this);}catch(e){}
						 $(document).unbind("click");
						 lista.slideUp();
					 })
			lista.append(nuevoElemento);
			}else{
				nuevoElemento.find("a").html(elemento.name);
				if(elemento.icon != null && nuevoElemento.find("img").length == 0)
					nuevoElemento.prepend('<img style="display: inline" src="'+elemento.icon+'"/>');
				else if (elemento.icon != null)
					nuevoElemento.find("img").attr("src",elemento.icon);
				else if (elemento.icon == "remove")
					nuevoElemento.find("img").remove();
			}
			comprobarAnchura();
		}
		
		if(settings.insertar != null)
		{
			lista = $(this).next().find("ul");

			$.each(settings.insertar,function(i,elemento){
				 insertarElemento(elemento);
			});
			return;
		}else if(settings.remove != null)
		{
			 $(this).next().find("#"+settings.remove).remove();
			 return;
		}
		else if(settings.newTitle != null)
		{
			$(this).next().find("button").find("span").html(settings.newTitle);
			return;
		}
		else if(settings.clean == true)
		{
			$(this).next().find("li").remove();
			return;
		}
		
		$(this).hide();
		var selectBox = $(this);
		menu = $("<div>").css("display","inline");
		var boton = $("<button>");
		
		boton.button({
            icons: {
            primary: settings.primary,
            secondary: settings.secondary
        	},
        	label:settings.title
		});
		boton.find(".alt").remove();
		
		lista =$('<ul class="ui-autocomplete ui-menu ui-widget ui-widget-content ui-corner-all" role="menu" aria-activedescendant="ui-active-menuitem" style="z-index:3005;">');
		     
		$.each(settings.elements,function(i,elemento){
			 insertarElemento(elemento);
		});
		
		lista.hide();
		
		boton.click(function(){
			$(this).focus();
			 if(lista.is(":visible"))
			 {
				 $(document).unbind("click");
				 lista.slideUp();
			 }
			 else
				 lista.slideDown(function(){
					 $(document).click(function(){
						 lista.slideUp(function(){
							 $(document).unbind("click");
						 });
					 });
				 });
		 });
		//Para que cuando se pinche fuera se quite la lista. En fx y chrome va diferente
		//boton.blur(function(){lista.hide()})

		menu.append(boton,lista);
		//$("body").append(lista);

		$(this).after(menu);


		//Si el menu sale por la derecha
		//lista.width(lista.width()+500);
		//lista.css({position:"absolute", left:menu.offset().left, top:menu.offset().top+boton.height()});
		//console.log(document.getElementById("chat").offsetLeft);
		//lista.css({position:"absolute", left:document.getElementById("chat").offsetLeft, top:0});
		//lista.addClass("chat");
	
		comprobarAnchura();
		/*if(menu.offset().left+lista.outerWidth(outerWidth)>$(window).width())
		{
			var overflow = menu.offset().left+lista.outerWidth(outerWidth)-$(window).width();
			lista.width(lista.width());
			lista.css("margin-left","-"+overflow+"px")
			
		}*/
		
		
		
	};
    
	$.fn.wixmenu.defaults  = {
			title: "title",
			elements:[{name:"element1",id:"a1"},{name:"element2",id:"a2"}],
			margenIzquierdo: 0,
			primary:'alt',
			secondary: 'ui-icon-triangle-1-s'
			
	};
	
	
	
	
})(jQuery);
